如何为CGpath数组的绘制设置动画?

您所在的位置:网站首页 android studio怎么调成中文 如何为CGpath数组的绘制设置动画?

如何为CGpath数组的绘制设置动画?

2022-12-31 08:55| 来源: 网络整理| 查看: 265

我正在尝试制作一个为用户绘制对象的应用程序.我现在有一个这样的对象,它是由一个类型的数组构成的[UIBezierPath].然后我使用循环UIBezierPath将数组中的所有s 更改为CGPaths,然后想要逐个绘制那些路径的动画.但是,当我尝试使用此代码时,它不起作用,我无法在网上找到任何有用的信息.这是代码被使用来转换阵列macbookPath它由UIBezierPath成CGPath:

for path in macbookPath { drawingPath.append(path.cgPath) }

然后我使用此代码尝试绘制路径:

for cgPath in drawingPath { shapeLayer.path = cgPath }

这是函数的其余代码,drawForm()它应该将表单绘制到一个名为的视图上aiDrawView:

@objc func drawForm() { var drawingPath = [CGPath]() var macbookPath = Forms.MacbookForm() let shapeLayer = CAShapeLayer() shapeLayer.frame = aiDrawView.bounds for path in macbookPath { drawingPath.append(path.cgPath) } for cgPath in drawingPath { shapeLayer.path = cgPath } let strokeEndAnimation = CABasicAnimation(keyPath: "strokeEnd") strokeEndAnimation.duration = 2.0 strokeEndAnimation.fromValue = 0.0 shapeLayer.add(strokeEndAnimation, forKey: "strokeEndAnimation") }

我是很新的CAShapeLayer,并CABasicAnimation和UIBezierPath因此任何帮助,将极大的赞赏!:d

1> Rob..:

我建议UIBezierPath从你的路径数组中构建一个单独的路径然后设置动画:

var paths: [UIBezierPath] = ... let path = UIBezierPath() paths.forEach { path.append($0) } shapeLayer.path = path.cgPath let animation = CABasicAnimation(keyPath: "strokeEnd") animation.duration = 2.0 animation.fromValue = 0.0 shapeLayer.add(animation, forKey: nil)

例如,这里有100条路径,组合成一条路径,strokeEnd然后在形状图层上进行动画处理:

在此输入图像描述

假设您的路径数组确实形成了一些连续路径,我建议将其存储为数组CGPoint.然后你可以从中构建一条路径.这消除了所有这些路径的开销.此外,它为原始数据集的缩放打开了大门,无需引入任何工件,能够使用线连接选项,如果您有不合适的线段序列,则应用平滑算法等.



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3